Modelo de Clasificación Logistica

El objetivo de este cuaderno es explorar la regresión logística y la ingeniería de características con las funciones de machine learning.

En este cuaderno, se utilizará la sabana de notas de los estudiantes para predecir la nota de matematicas determinando si paso o no la asignatura.

  • Se usa SFrames para hacer algunas funciones de ingeniería
  • Se entrena un modelo de regresión logística para predecir la calificacion de matematicas de los estudiantes.
  • Se inspeccionan los pesos (coeficientes) de un modelo entrenado de regresión logística.
  • Se hace una predicción (tanto de clase como de probabilidad) de la calificación para una nueva nota de la asignatura.
  • Dados los pesos de regresión logística, los predictores y las notas de verdad básica, se crea una función para calcular la precisión del modelo.
  • Se inspeccionan los coeficientes del modelo de regresión logística e interpreta sus significados con el fin de determinar las probabilidades.
  • Se comparan dos modelos de regresión logistica para determinar cual es mejor

Importanción de las librerias

In [49]:

Preparación y Entendimiento de los datos

Se utilizara un conjunto de datos que consiste en la sabana de notas de los estudiantes.

In [50]:
Finished parsing file https://drive.google.com/uc?id=12y4Yirhk1B-Cy6jMTeMPa1SHHdxAuhFm&export=download&authuser=0
Parsing completed. Parsed 100 lines in 0.005879 secs.
------------------------------------------------------
Inferred types from first 100 line(s) of file as 
column_type_hints=[str,str,str,int,str,int,int,float,int,float,float,float,float,float,float,float,float,float,float,float,float,float,float,str,str,str,str]
If parsing fails due to incorrect types, you can correct
the inferred type list above and pass it to read_csv in
the column_type_hints argument
------------------------------------------------------
Finished parsing file https://drive.google.com/uc?id=12y4Yirhk1B-Cy6jMTeMPa1SHHdxAuhFm&export=download&authuser=0
Parsing completed. Parsed 214 lines in 0.003314 secs.

Ahora se puede tener una vista previa de como se ve el conjunto de datos

In [51]:
Out[51]:
ESTUDIANTE R S CURSO J10 Estrato AÑO ECONOMIA FÍSICA QUÍMICA SOCIALES
AGREDO TORRES KAROL
MELISA ...
N F 1001 M 2 2016 69.7 73 60.66666667 72.0
ARIZA MARTINEZ CAMPVERLLY
SAMANTHA ...
N F 1001 M 2 2016 68.7 68 65.33333333 72.66666667
CAÑON SUAREZ JESSICA
VIVIANA ...
N F 1001 M 2 2016 42.7 45 35.0 36.66666667
CASALLAS HUERFANO LINA
MARIA ...
N F 1001 M 2 2016 74.7 63 62.66666667 73.33333333
CHUNZA GOMEZ LIZETH
ANDREA ...
N F 1001 M 2 2016 65.0 53 49.66666667 70.66666667
FARFAN PULIDO ANDRES
FELIPE ...
N M 1001 M 2 2016 43.3 43 33.33333333 23.33333333
GALINDO MORENO MARILYN
DANIELA ...
N F 1001 M 2 2016 60.7 60 57.33333333 64.66666667
GAVIRIA HERRERA SANTIAGO N M 1001 M 2 2016 62.3 52 40.33333333 59.0
GOMEZ ROMERO JONATHAN N M 1001 M 2 2016 63.0 55 51.33333333 63.33333333
GONZALEZ RODRIGUEZ HENRY
JOEL ...
N M 1001 M 2 2016 61.7 54 54.0 56.66666667
EDUCACION ARTISTICA RECREACIÓN Y DEPORTES RELIGION ETICA FILOSOFIA INGLES LENGUA CASTELLANA
78.33333333 62.33333333 68.33333333 74.66666667 80.33333333 65.66666667 71.66666667
79.33333333 71.66666667 69.33333333 73.66666667 62.33333333 60.0 74.0
40.0 53.0 46.33333333 41.66666667 30.0 42.33333333 31.66666667
78.33333333 67.66666667 76.0 75.33333333 71.0 69.0 72.33333333
57.0 52.66666667 66.66666667 70.33333333 61.0 58.66666667 64.66666667
56.0 47.66666667 48.66666667 23.33333333 38.33333333 42.0 36.66666667
81.66666667 51.0 68.0 69.66666667 61.66666667 59.0 63.33333333
67.33333333 48.33333333 56.33333333 56.66666667 60.0 53.33333333 68.66666667
61.0 66.66666667 60.33333333 73.33333333 60.0 61.0 56.66666667
67.0 66.0 64.33333333 57.0 64.0 60.66666667 58.33333333
TRIGONOMETRIA ADMINISTRACION MANEJO ORDENADORES PREPARACIÓN TECNOLÓGICA CALCULO CONVENCIONES MINISTERIO
71.33333333 78.0 79.0 70.33333333 75.66666667 BASICO
65.33333333 62.33333333 85.66666667 68.66666667 69.33333333 BASICO
36.66666667 43.66666667 48.33333333 35.66666667 -1.0 BAJO
67.33333333 77.66666667 79.0 71.33333333 77.0 BASICO
54.0 66.66666667 78.0 67.33333333 70.33333333 BASICO
24.33333333 26.66666667 60.66666667 16.66666667 -1.0 BAJO
68.33333333 66.0 74.33333333 60.66666667 73.66666667 BASICO
54.33333333 65.66666667 63.0 51.0 -1.0 BAJO
66.0 49.33333333 76.66666667 65.0 64.0 BASICO
60.0 66.0 68.66666667 62.33333333 -1.0 BAJO
C11 J11 A11
1101 M 2017
1101 M 2017
None None None
1101 M 2017
1101 M 2017
None None None
1101 M 2017
None None None
1102 M 2017
None None None
[10 rows x 27 columns]

Se borran los estudiantes que tienen la nota menor a 0 ya que estos estudiantes no continuaron sus estudios

In [52]:

Se crea funcion para convertir caracteristicas categoricas en 0 y 1

In [53]:

Se crea funcion para renombrar las caracteristicas categoricas

In [54]:
In [55]:
In [56]:

Se verifican y validan que los tipos de datos de las columnas sehan adecuados para analizar

In [57]:
Out[57]:
ESTUDIANTE                  object
CURSO                        int64
Estrato                      int64
AÑO                          int64
ECONOMIA                   float64
FÍSICA                       int64
QUÍMICA                    float64
SOCIALES                   float64
EDUCACION ARTISTICA        float64
RECREACIÓN Y DEPORTES      float64
RELIGION                   float64
ETICA                      float64
FILOSOFIA                  float64
INGLES                     float64
LENGUA CASTELLANA          float64
TRIGONOMETRIA              float64
ADMINISTRACION             float64
MANEJO  ORDENADORES        float64
PREPARACIÓN TECNOLÓGICA    float64
CALCULO                    float64
CONVENCIONES MINISTERIO     object
C11                         object
A11                         object
S                            uint8
R                            uint8
J10                          uint8
J11                          uint8
dtype: object

Se identifica que las notas de fisica esta en formato int, se convierte a float para mejorar la uniformidad de los datos

In [58]:

Se visualizan la cantidad de filas y columna, que se encuentran en la sábana de notas

In [59]:
Out[59]:
(182, 27)

En la siguiente tabla se pueden ver información estadistica de las columnas que tienen valores numericos

In [60]:
Out[60]:
CURSO Estrato AÑO ECONOMIA FÍSICA QUÍMICA SOCIALES EDUCACION ARTISTICA RECREACIÓN Y DEPORTES RELIGION ... LENGUA CASTELLANA TRIGONOMETRIA ADMINISTRACION MANEJO ORDENADORES PREPARACIÓN TECNOLÓGICA CALCULO S R J10 J11
count 182.000000 182.000000 182.000000 182.000000 182.000000 182.000000 182.000000 182.000000 182.000000 182.000000 ... 182.000000 182.000000 182.000000 182.000000 182.000000 182.000000 182.000000 182.000000 182.000000 182.000000
mean 1002.280220 1.873626 2016.417582 65.382418 65.719780 63.880952 68.717399 70.722527 65.566117 70.866484 ... 71.205128 67.116484 40.545788 79.809524 71.897436 68.105678 0.423077 0.043956 0.296703 0.269231
std 1.015648 0.333187 0.494521 6.876521 8.148046 8.860483 8.104239 10.029246 6.833881 10.390132 ... 9.662096 10.290369 35.085374 8.565802 8.613407 10.554833 0.495410 0.205563 0.458065 0.444784
min 1001.000000 1.000000 2016.000000 45.300000 43.000000 39.000000 31.100000 35.000000 42.000000 33.300000 ... 43.000000 26.700000 0.000000 57.000000 49.000000 40.000000 0.000000 0.000000 0.000000 0.000000
25% 1001.000000 2.000000 2016.000000 61.000000 61.000000 60.000000 64.300000 63.308333 61.391667 64.675000 ... 64.000000 61.300000 0.000000 74.000000 66.000000 59.000000 0.000000 0.000000 0.000000 0.000000
50% 1002.000000 2.000000 2016.000000 63.700000 65.000000 62.000000 68.316667 71.500000 65.850000 71.000000 ... 71.000000 67.000000 59.000000 80.000000 71.000000 68.300000 0.000000 0.000000 0.000000 0.000000
75% 1003.000000 2.000000 2017.000000 69.925000 71.000000 69.000000 74.300000 78.000000 69.300000 78.925000 ... 77.000000 73.000000 71.000000 86.000000 77.000000 75.575000 1.000000 0.000000 1.000000 1.000000
max 1004.000000 2.000000 2017.000000 87.000000 89.000000 93.000000 89.700000 100.000000 90.000000 95.300000 ... 98.000000 93.300000 90.000000 100.000000 95.000000 93.000000 1.000000 1.000000 1.000000 1.000000

8 rows × 23 columns

Se identifica la correlación de la variables de las notas.

In [61]:
Out[61]:
ECONOMIA FÍSICA QUÍMICA SOCIALES EDUCACION ARTISTICA RECREACIÓN Y DEPORTES RELIGION ETICA FILOSOFIA INGLES LENGUA CASTELLANA TRIGONOMETRIA ADMINISTRACION MANEJO ORDENADORES PREPARACIÓN TECNOLÓGICA CALCULO
ECONOMIA 1.000000 0.654560 0.662660 0.568937 0.512738 0.419977 0.464416 0.492083 0.559481 0.682503 0.740452 0.504239 0.402085 0.630284 0.587149 0.413420
FÍSICA 0.654560 1.000000 0.646565 0.519180 0.536394 0.525484 0.468681 0.532020 0.488587 0.697686 0.680097 0.699965 0.220494 0.615061 0.656335 0.438967
QUÍMICA 0.662660 0.646565 1.000000 0.515767 0.523293 0.446926 0.447482 0.402974 0.541596 0.690920 0.668528 0.524839 0.304610 0.548704 0.584660 0.431705
SOCIALES 0.568937 0.519180 0.515767 1.000000 0.598828 0.375750 0.556417 0.470298 0.620119 0.525902 0.681563 0.593761 -0.147166 0.520013 0.452037 0.438208
EDUCACION ARTISTICA 0.512738 0.536394 0.523293 0.598828 1.000000 0.527466 0.497146 0.424762 0.556738 0.507173 0.606110 0.549845 -0.005689 0.496597 0.536868 0.403474
RECREACIÓN Y DEPORTES 0.419977 0.525484 0.446926 0.375750 0.527466 1.000000 0.382537 0.279597 0.449259 0.486549 0.512944 0.536864 0.087713 0.486393 0.420001 0.237051
RELIGION 0.464416 0.468681 0.447482 0.556417 0.497146 0.382537 1.000000 0.463187 0.471877 0.442039 0.581906 0.477554 0.049104 0.354483 0.429625 0.287640
ETICA 0.492083 0.532020 0.402974 0.470298 0.424762 0.279597 0.463187 1.000000 0.497641 0.550391 0.533262 0.470689 0.183785 0.560148 0.494082 0.302786
FILOSOFIA 0.559481 0.488587 0.541596 0.620119 0.556738 0.449259 0.471877 0.497641 1.000000 0.494767 0.675481 0.618068 -0.104232 0.520034 0.422126 0.447931
INGLES 0.682503 0.697686 0.690920 0.525902 0.507173 0.486549 0.442039 0.550391 0.494767 1.000000 0.675294 0.575051 0.365003 0.639461 0.641830 0.457809
LENGUA CASTELLANA 0.740452 0.680097 0.668528 0.681563 0.606110 0.512944 0.581906 0.533262 0.675481 0.675294 1.000000 0.688497 0.117295 0.658298 0.615378 0.456100
TRIGONOMETRIA 0.504239 0.699965 0.524839 0.593761 0.549845 0.536864 0.477554 0.470689 0.618068 0.575051 0.688497 1.000000 -0.119174 0.603650 0.522556 0.473854
ADMINISTRACION 0.402085 0.220494 0.304610 -0.147166 -0.005689 0.087713 0.049104 0.183785 -0.104232 0.365003 0.117295 -0.119174 1.000000 0.244827 0.247979 0.069108
MANEJO ORDENADORES 0.630284 0.615061 0.548704 0.520013 0.496597 0.486393 0.354483 0.560148 0.520034 0.639461 0.658298 0.603650 0.244827 1.000000 0.632746 0.416735
PREPARACIÓN TECNOLÓGICA 0.587149 0.656335 0.584660 0.452037 0.536868 0.420001 0.429625 0.494082 0.422126 0.641830 0.615378 0.522556 0.247979 0.632746 1.000000 0.416741
CALCULO 0.413420 0.438967 0.431705 0.438208 0.403474 0.237051 0.287640 0.302786 0.447931 0.457809 0.456100 0.473854 0.069108 0.416735 0.416741 1.000000

Representación grafica de la correlación de las variables, las correlaciones positivas estan en amarillo y los colores mas claros indican una correlacion baja o nula.

In [62]:
Out[62]:
<matplotlib.image.AxesImage at 0x7fb6940b0550>
In [63]:

En la siguiente tabla se pueden ver información estadistica de la caracteristica objetivo CALCULO

In [64]:
Out[64]:
+--------------------+--------------------+----------+
|        item        |       value        | is exact |
+--------------------+--------------------+----------+
|       Length       |        182         |   Yes    |
|        Min         |        40.0        |   Yes    |
|        Max         |        93.0        |   Yes    |
|        Mean        |  68.1056776558242  |   Yes    |
|        Sum         |   12395.23333336   |   Yes    |
|      Variance      | 110.79237924410957 |   Yes    |
| Standard Deviation | 10.525795895993308 |   Yes    |
|  # Missing Values  |         0          |   Yes    |
|  # unique values   |         86         |    No    |
+--------------------+--------------------+----------+

Most frequent items:
+-------------+-------+
|    value    | count |
+-------------+-------+
|     54.3    |   40  |
|     75.0    |   6   |
|     64.0    |   5   |
|     72.0    |   5   |
|     67.7    |   4   |
|     68.3    |   4   |
| 64.66666667 |   3   |
| 73.33333333 |   3   |
|     70.0    |   3   |
|     67.0    |   3   |
+-------------+-------+

Quantiles: 
+------+------+------+-------------+------+-------------+------+------+------+
|  0%  |  1%  |  5%  |     25%     | 50%  |     75%     | 95%  | 99%  | 100% |
+------+------+------+-------------+------+-------------+------+------+------+
| 40.0 | 48.7 | 54.3 | 58.66666667 | 68.3 | 75.66666667 | 85.7 | 92.0 | 93.0 |
+------+------+------+-------------+------+-------------+------+------+------+

Histograma con regla de Sturges para las notas de Calculo

Se puede apreciar en el histograma que los datos tienen una distribución sin muchos valores atipicos

In [65]:
Out[65]:
Text(0.5, 1.0, 'Histograma Notas de Calculo')

Diagrama de caja para las notas de Calculo

En este diagrama se puede identificar la nota media y donde se concentran la mayoria de los datos

In [66]:
Out[66]:
Text(0.5, 1.0, 'Boxplot de Notas de Calculo')

De los anteriores diagramas se puede determinar que los datos de las notas de Calculo son viable para analisis ya que no son aleatorios y la mayoria de las notas se encuentran entre 57 y 75.

Una vez analizados los datos se crea una columna donde las notas que tengan una calificación de más de 60 para se revisaran como positivas, mientras que las que tengan una calificación menor de 60 seran negativas. Para la columna de Fracaso, se usa +1 para la revisión de clase positiva y -1 para la etiqueta de clase negativa.

In [67]:

Se puede visualizar que el conjunto de datos contiene una columna adicional llamada Fracaso que es positivo(+1) o negativo (-1)

In [68]:
Out[68]:
[136, 46]

Grafica de pastel de columna fracaso

En esta grafica se puede visualizar que la cuarta parte de los estudiantes tiende a perder la asignatura de Calculo, lo cual representará dificultades y/o posible desercion en su formación de educación superior en carreras que requieran de buenos conocimientos matematicos como los son las ingenierias.

In [69]:
Out[69]:
Text(0.5, 1.0, 'Grafica paste de fracaso en Calculo')

División de los datos en conjuntos de entrenamiento y de prueba

Se realiza la división de los datos a los que se realizara el estrenamiento y prueba, donde se utilizara el 80% de los datos en el conjunto de entrenamiento y el 20% de los datos en el conjunto de prueba. Se usa seed = 1 para que los datos obtengan el mismo resultado.

In [70]:
118
64

Se realiza la selección de caracteristicas teniendo en cuenta las variable dicotomicas, sin tener en cuenta el nombre de los estudiantes, la caracteristica CALCULO y la caracteristica CONVENCIONES MINISTERIO ya que se creo la caracteristica objetivo Fracaso.

In [71]:
Out[71]:
['CURSO',
 'Estrato',
 'AÑO',
 'ECONOMIA',
 'FÍSICA',
 'QUÍMICA',
 'SOCIALES',
 'EDUCACION ARTISTICA',
 'RECREACIÓN Y DEPORTES',
 'RELIGION',
 'ETICA',
 'FILOSOFIA',
 'INGLES',
 'LENGUA CASTELLANA',
 'TRIGONOMETRIA',
 'ADMINISTRACION',
 'MANEJO  ORDENADORES',
 'PREPARACIÓN TECNOLÓGICA',
 'C11',
 'A11',
 'S',
 'R',
 'J10',
 'J11']

Entrenamiento del clasificador de estudiantes con regresión logística

Ahora se utiliza la regresión logística para crear un clasificador de estudiantes en los datos de entrenamiento. Este modelo utilizará los valores students como una característica y la columna de Fracaso como objetivo. Se usará validation_set = None para obtener los mismos resultados que todos los demás.

In [72]:
Logistic regression:
--------------------------------------------------------
Number of examples          : 118
Number of classes           : 2
Number of feature columns   : 24
Number of unpacked features : 24
Number of coefficients      : 26
Starting Newton Method
--------------------------------------------------------
+-----------+----------+--------------+-------------------+
| Iteration | Passes   | Elapsed Time | Training Accuracy |
+-----------+----------+--------------+-------------------+
| 1         | 2        | 1.005747     | 0.923729          |
| 2         | 3        | 1.009920     | 0.932203          |
| 3         | 4        | 1.011362     | 0.932203          |
| 4         | 5        | 1.012548     | 0.940678          |
| 5         | 6        | 1.013912     | 0.932203          |
| 6         | 7        | 1.015472     | 0.932203          |
+-----------+----------+--------------+-------------------+
SUCCESS: Optimal solution found.

Ahora se puede visualizar el clasificador donde se evidencia que se encontro una solucion óptima.

In [73]:
Out[73]:
Class                          : LogisticClassifier

Schema
------
Number of coefficients         : 26
Number of examples             : 118
Number of classes              : 2
Number of feature columns      : 24
Number of unpacked features    : 24

Hyperparameters
---------------
L1 penalty                     : 0.0
L2 penalty                     : 0.01

Training Summary
----------------
Solver                         : newton
Solver iterations              : 6
Solver status                  : SUCCESS: Optimal solution found.
Training time (sec)            : 1.0171

Settings
--------
Log-likelihood                 : 21.4187

Highest Positive Coefficients
-----------------------------
(intercept)                    : 17.0598
J10                            : 1.3396
S                              : 0.1473
FILOSOFIA                      : 0.0662
SOCIALES                       : 0.0355

Lowest Negative Coefficients
----------------------------
C11[1102]                      : -10.369
C11[1103]                      : -9.0237
A11[2018]                      : -8.0075
R                              : -5.2243
J11                            : -3.8427

Cuando se tiene el modelo se pueden extraer los pesos (coeficientes) como un SFrame

In [74]:
Out[74]:
name index class value stderr
(intercept) None 1 17.059824721788804 16215.126120211367
CURSO None 1 6.190432712863723e-05 0.9536800586905394
Estrato None 1 -1.1840941438085149 1.6687267781903081
AÑO None 1 2.2577873980147676e-06 8.087552148687868
ECONOMIA None 1 -0.03368391711600948 0.13970046546597867
FÍSICA None 1 0.022528114297520118 0.08991329530389969
QUÍMICA None 1 -0.015623545105073373 0.09467866530180383
SOCIALES None 1 0.03545297476478828 0.09432698378590193
EDUCACION ARTISTICA None 1 -0.01036769606464626 0.07648882420073409
RECREACIÓN Y DEPORTES None 1 0.007549084195047999 0.10447672420666211
[26 rows x 5 columns]
Note: Only the head of the SFrame is printed.
You can use print_rows(num_rows=m, num_columns=n) to print more rows and columns.

Hay un total de 25 coeficientes en el modelo. Los coeficientes positivos wj corresponden a pesos que causan notas positivas, mientras que los pesos negativos corresponden a notas negativas.

El siguiente bloque de código calcula cuántos pesos son positivos (> = 0). (Sugerencia: la columna 'valor' en los pesos de SFrame debe ser positiva (> = 0)).

In [75]:
Numero de coeficientes positivos: 14 
Numero de coeficientes negativos: 12 

Predicción con Regresión Logistica

Ahora que un modelo está entrenado, se realizan las predicciones sobre los datos de la prueba. Se realiza la exploración en el contexto de 3 ejemplos en el conjunto de datos de prueba. Se hace referencia a este conjunto de 3 ejemplos como muestra_prueba_datos.

In [76]:
Out[76]:
dtype: float
Rows: 64
[69.33333333, 77.0, 75.0, 74.33333333, 70.3, 72.0, 76.66666667, 77.0, 73.33333333, 82.66666667, 61.33333333, 78.33333333, 92.0, 62.33333333, 74.66666667, 77.66666667, 85.66666667, 54.3, 54.3, 67.66666667, 84.3, 63.0, 78.0, 69.66666667, 54.3, 65.33333333, 75.0, 54.3, 54.3, 54.3, 54.3, 54.3, 76.3, 72.0, 68.0, 67.7, 48.7, 74.3, 71.7, 68.3, 62.0, 56.3, 79.3, 54.3, 86.0, 82.7, 69.0, 70.0, 68.7, 64.3, 68.3, 67.3, 54.3, 54.3, 68.3, 67.0, 78.0, 78.7, 63.3, 68.3, 77.7, 68.7, 67.7, 82.0]
In [77]:
[62.33333333, 74.66666667, 77.66666667]
Out[77]:
ESTUDIANTE CURSO Estrato AÑO ECONOMIA FÍSICA QUÍMICA SOCIALES EDUCACION ARTISTICA
DAZA PANCHE YUDY NATHALIA 1002 2 2016 62.7 64.0 66.0 64.7 55.3
DIAZ ALVARADO NATHALY 1002 2 2016 71.7 80.0 86.0 73.0 80.0
GARCIA RIAÑO NATALIA 1002 2 2016 78.7 72.0 76.0 74.0 72.3
RECREACIÓN Y DEPORTES RELIGION ETICA FILOSOFIA INGLES LENGUA CASTELLANA TRIGONOMETRIA ADMINISTRACION
60.3 68.3 74.0 62.3 60.0 66.0 63.3 60.0
85.0 77.0 78.0 84.0 75.0 83.0 76.7 90.0
63.0 76.0 75.0 85.0 74.0 83.0 71.3 83.0
MANEJO ORDENADORES PREPARACIÓN TECNOLÓGICA CALCULO CONVENCIONES MINISTERIO C11 A11 S R J10 J11
72.0 61.0 62.33333333 BASICO 1102 2017 0 0 0 0
96.0 91.0 74.66666667 BASICO 1102 2017 0 0 0 1
88.0 81.0 77.66666667 BASICO 1102 2017 0 0 0 0
Fracaso
1
1
1
[3 rows x 28 columns]

Profundizando en la primera fila de muestra_prueba_datos. Este seria el detalle completo del estudiante:

In [78]:
Out[78]:
{'ESTUDIANTE': 'DAZA PANCHE YUDY NATHALIA',
 'CURSO': 1002,
 'Estrato': 2,
 'AÑO': 2016,
 'ECONOMIA': 62.7,
 'FÍSICA': 64.0,
 'QUÍMICA': 66.0,
 'SOCIALES': 64.7,
 'EDUCACION ARTISTICA': 55.3,
 'RECREACIÓN Y DEPORTES': 60.3,
 'RELIGION': 68.3,
 'ETICA': 74.0,
 'FILOSOFIA': 62.3,
 'INGLES': 60.0,
 'LENGUA CASTELLANA': 66.0,
 'TRIGONOMETRIA': 63.3,
 'ADMINISTRACION': 60.0,
 'MANEJO  ORDENADORES': 72.0,
 'PREPARACIÓN TECNOLÓGICA': 61.0,
 'CALCULO': 62.33333333,
 'CONVENCIONES MINISTERIO': 'BASICO',
 'C11': '1102',
 'A11': '2017',
 'S': 0,
 'R': 0,
 'J10': 0,
 'J11': 0,
 'Fracaso': 1}

Esa estudiante perdio calculo adicionalmente es propenso a perder economia y quimica.

En la siguiente fila de muestra_prueba_datos. Se puede evidenciar que es un buen estudiante, no perdio ninguna materia y no esta propenso a perder alguna otra.

In [79]:
Out[79]:
{'ESTUDIANTE': 'DIAZ ALVARADO NATHALY',
 'CURSO': 1002,
 'Estrato': 2,
 'AÑO': 2016,
 'ECONOMIA': 71.7,
 'FÍSICA': 80.0,
 'QUÍMICA': 86.0,
 'SOCIALES': 73.0,
 'EDUCACION ARTISTICA': 80.0,
 'RECREACIÓN Y DEPORTES': 85.0,
 'RELIGION': 77.0,
 'ETICA': 78.0,
 'FILOSOFIA': 84.0,
 'INGLES': 75.0,
 'LENGUA CASTELLANA': 83.0,
 'TRIGONOMETRIA': 76.7,
 'ADMINISTRACION': 90.0,
 'MANEJO  ORDENADORES': 96.0,
 'PREPARACIÓN TECNOLÓGICA': 91.0,
 'CALCULO': 74.66666667,
 'CONVENCIONES MINISTERIO': 'BASICO',
 'C11': '1102',
 'A11': '2017',
 'S': 0,
 'R': 0,
 'J10': 0,
 'J11': 1,
 'Fracaso': 1}

A continuación se realiza la predicción clase para muestra_prueba_datos. El students_model debe predecir +1 si la nota es positiva y - 1 si la nota es negativa. El puntaje (a veces llamado margen) para el modelo de regresión logística se define como:

puntajei=wTh(xi)

donde h(xi) representa las características, por ejemplo, i. El siguiente código permitira obtener los puntajes usando Turi Create. Para cada fila, el puntaje (o margen) es un número en el rango entre [- inf, inf].

In [80]:
[3.4675152931006235, 0.6969034319864065, 4.636478575226176]

Prediccion de la Nota

Los puntajes anteriormente obtenidos se pueden usar para hacer predicciones de clase de la siguiente manera:

y^={+1wTh(xi)>0−1wTh(xi)≤0

Usando los puntajes, escriba el código para calcular y^, las predicciones de la clase:

In [81]:
[1, 1, 1]
[1, 1, 1]

El siguiente código permite verificar que las predicciones de clase obtenidas en los cálculos anteriores sean las mismas que las obtenidas de Turi Create.

In [82]:
[1, 1, 1]

Probabilidad de la Predicción

Para calcular las probabilidades de las predicciones de los puntajes se usa:

P(yi=+1|xi,w)=11+exp⁡(−wTh(xi))

Usando la variable puntajes calculada previamente, se puede calcular la probabilidad de que una nota sea positiva usando la fórmula anterior. Para cada fila, las probabilidades deben ser un número en el rango [0, 1].

In [83]:
[0.9697492129705938, 0.6675008659813135, 0.9904012622905511]
[0.9697492129705938, 0.6675008659813135, 0.9904012622905511]

El siguiente codigo permite verificar la probabilidad de las predicciones las cuales coinciden con las obtenidas de Turi Create.

In [84]:
[0.9697492129705938, 0.6675008659813135, 0.990401262290551]

Encontrar los estudiantes con mayores probabilidades de tener buena nota

Ahora se puede examinar el conjunto de datos de prueba completo, test_data, y se usa Turi Create para formar predicciones en todos los puntos de datos de prueba para un rendimiento más rápido.

Usando el students_model, se encuentrara las 20 revisiones en todo test_data con la mayor probabilidad de ser clasificado como nota positiva. Se hace referencia a estos como las "notas más positivos".

Para calcular estas 20 notas principales, se realizan los siguientes pasos:

  1. Hacer predicciones de probabilidad en test_data usando el students_model. Se utiliza el metodo .predict para hacer predicciones sobre los datos de prueba, adicionalmente se usa la opción output_type = 'probability' para generar la probabilidad en lugar de solo la clase más probable).
  2. Ordenar los datos de acuerdo con las predicciones y elijir los primeros 20. Se utiliza el método .topk en un SFrame para encontrar las k filas superiores ordenadas según el valor de una columna especificada.
In [85]:
+--------------------------------+-------+---------+------+----------+--------+
|           ESTUDIANTE           | CURSO | Estrato | AÑO  | ECONOMIA | FÍSICA |
+--------------------------------+-------+---------+------+----------+--------+
|   RAMIREZ ARANGO TANIA YISEL   |  1001 |    2    | 2016 |   68.7   |  64.0  |
| MANZANO PATIÑO JULIAN ALEX...  |  1001 |    2    | 2016 |   61.3   |  69.0  |
|  LUIS LEGUIZAMON DAYANA SOFIA  |  1001 |    2    | 2016 |   76.3   |  66.0  |
|  RICO ESPITIA JOHAN FERNANDO   |  1001 |    2    | 2016 |   75.0   |  71.0  |
| BARRIOS GARCIA SHELCY VIVIANA  |  1002 |    2    | 2016 |   68.3   |  61.0  |
| MARTINEZ LOAIZA JESSICA AL...  |  1001 |    2    | 2016 |   59.7   |  64.0  |
| ARIZA MARTINEZ CAMPVERLLY ...  |  1001 |    2    | 2016 |   68.7   |  68.0  |
|   PERDOMO CASTRO DUVAN DARIO   |  1001 |    2    | 2016 |   64.3   |  76.0  |
|  CASALLAS HUERFANO LINA MARIA  |  1001 |    2    | 2016 |   74.7   |  63.0  |
|  FERNANDEZ PEREZ EDGAR FABIAN  |  1004 |    2    | 2016 |   59.7   |  60.0  |
| MENDIETA GARAVITO AMALIA V...  |  1001 |    1    | 2017 |   60.3   |  60.0  |
| CARDONA BENITEZ DIEGO ALEJ...  |  1001 |    1    | 2017 |   62.7   |  63.0  |
| RODRIGUEZ GONZALEZ KAREN T...  |  1001 |    1    | 2017 |   66.7   |  66.0  |
| ALTUZARRA CASTILLO ANGIE K...  |  1001 |    2    | 2017 |   67.3   |  78.0  |
| MARTINEZ VASQUEZ DEIVYD YESID  |  1001 |    2    | 2017 |   62.3   |  64.0  |
| BRICEÑO HERRERA KATERINE N...  |  1001 |    2    | 2017 |   62.0   |  58.0  |
| CADAVID MORALES JEFFERSON JAIR |  1004 |    2    | 2016 |   64.0   |  65.0  |
|   MORENO ULLOA CARLOS DUVAN    |  1001 |    2    | 2017 |   60.0   |  55.0  |
|  CALDERON TOCA YULY VALENTINA  |  1002 |    2    | 2016 |   84.3   |  89.0  |
|  GAMBA CONTRERAS CINDY PAOLA   |  1003 |    1    | 2016 |   81.3   |  76.0  |
+--------------------------------+-------+---------+------+----------+--------+
+-------------+-------------+---------------------+-----------------------+
|   QUÍMICA   |   SOCIALES  | EDUCACION ARTISTICA | RECREACIÓN Y DEPORTES |
+-------------+-------------+---------------------+-----------------------+
|     70.0    | 72.33333333 |     81.66666667     |          60.0         |
| 60.33333333 | 68.33333333 |     74.66666667     |      65.33333333      |
| 63.33333333 |     81.5    |         74.0        |      66.33333333      |
| 70.33333333 |     77.0    |     81.33333333     |      79.66666667      |
|     60.0    |     66.3    |         59.3        |          60.0         |
| 48.66666667 | 58.66666667 |     68.33333333     |      65.33333333      |
| 65.33333333 | 72.66666667 |     79.33333333     |      71.66666667      |
|     55.0    |     69.0    |         80.0        |      71.33333333      |
| 62.66666667 | 73.33333333 |     78.33333333     |      67.66666667      |
|     61.0    |     58.0    |         60.0        |          64.7         |
|     60.0    |     65.7    |         81.7        |          73.7         |
|     60.0    |     80.0    |         61.7        |          67.0         |
|     67.0    |     77.3    |         70.0        |          65.3         |
|     70.0    |     86.3    |         66.7        |          69.7         |
|     66.0    |     84.0    |         75.0        |          62.7         |
|     61.0    |     75.7    |         81.7        |          71.7         |
|     63.0    |     66.7    |         74.0        |          60.3         |
|     61.0    |     73.0    |         73.3        |          69.3         |
|     93.0    |     86.3    |         87.3        |          81.3         |
|     74.0    |     79.7    |         77.7        |          66.3         |
+-------------+-------------+---------------------+-----------------------+
+-------------+-------------+-------------+-------------+-------------------+
|   RELIGION  |    ETICA    |  FILOSOFIA  |    INGLES   | LENGUA CASTELLANA |
+-------------+-------------+-------------+-------------+-------------------+
|     80.0    | 70.66666667 | 89.66666667 |     66.0    |    79.66666667    |
| 64.33333333 | 66.33333333 | 67.66666667 | 66.66666667 |    79.33333333    |
| 72.33333333 |     76.0    |     82.0    | 72.66666667 |        82.0       |
| 86.33333333 |     81.0    | 87.33333333 | 78.66666667 |        74.0       |
|     68.0    |     72.7    |     78.0    |     68.0    |        62.0       |
|     74.0    | 65.33333333 |     60.0    |     63.0    |    65.33333333    |
| 69.33333333 | 73.66666667 | 62.33333333 |     60.0    |        74.0       |
| 71.33333333 | 76.33333333 |     70.0    | 73.33333333 |    64.33333333    |
|     76.0    | 75.33333333 |     71.0    |     69.0    |    72.33333333    |
|     63.7    |     70.0    |     75.0    |     60.0    |        60.0       |
|     76.7    |     68.7    |     91.7    |     64.0    |        72.0       |
|     81.7    |     78.0    |     90.0    |     55.0    |        74.0       |
|     81.7    |     77.7    |     80.7    |     73.0    |        80.0       |
|     93.7    |     83.7    |     80.0    |     77.0    |        88.0       |
|     64.7    |     79.7    |     86.7    |     62.0    |        68.0       |
|     79.0    |     80.0    |     93.7    |     64.0    |        72.0       |
|     68.0    |     89.7    |     66.3    |     74.0    |        75.0       |
|     79.0    |     69.3    |     62.0    |     54.0    |        69.0       |
|     87.7    |     82.7    |     94.3    |     83.0    |        97.0       |
|     84.3    |     78.0    |     94.3    |     71.0    |        91.0       |
+-------------+-------------+-------------+-------------+-------------------+
+---------------+----------------+---------------------+-------------------------+
| TRIGONOMETRIA | ADMINISTRACION | MANEJO  ORDENADORES | PREPARACIÓN TECNOLÓGICA |
+---------------+----------------+---------------------+-------------------------+
|      68.0     |  74.33333333   |     85.66666667     |           83.0          |
|      75.0     |  73.66666667   |         84.0        |           71.0          |
|      71.0     |      74.0      |         92.0        |       72.66666667       |
|  74.33333333  |  78.66666667   |     82.66666667     |           84.0          |
|      53.7     |      58.0      |         73.0        |           66.0          |
|  66.66666667  |  70.66666667   |         81.0        |           75.0          |
|  65.33333333  |  62.33333333   |     85.66666667     |       68.66666667       |
|  67.33333333  |  78.33333333   |     77.33333333     |       83.66666667       |
|  67.33333333  |  77.66666667   |         79.0        |       71.33333333       |
|      68.3     |      57.0      |         81.0        |           68.0          |
|      62.3     |      0.0       |         76.0        |           71.0          |
|      56.0     |      0.0       |         81.0        |           70.0          |
|      72.7     |      0.0       |         81.0        |           69.0          |
|      76.7     |      0.0       |         90.0        |           76.0          |
|      70.3     |      0.0       |         81.0        |           78.0          |
|      61.0     |      0.0       |         80.0        |           69.0          |
|      66.3     |      77.0      |         91.0        |           74.0          |
|      58.0     |      0.0       |         87.0        |           71.0          |
|      91.3     |      84.0      |        100.0        |           95.0          |
|      78.3     |      77.0      |         90.0        |           80.0          |
+---------------+----------------+---------------------+-------------------------+
+-------------+-------------------------+------+------+---+---+-----+-----+---------+
|   CALCULO   | CONVENCIONES MINISTERIO | C11  | A11  | S | R | J10 | J11 | Fracaso |
+-------------+-------------------------+------+------+---+---+-----+-----+---------+
|     77.0    |          BASICO         | 1101 | 2017 | 0 | 0 |  0  |  0  |    1    |
| 74.33333333 |          BASICO         | 1101 | 2017 | 1 | 0 |  0  |  0  |    1    |
|     75.0    |          BASICO         | 1101 | 2017 | 0 | 0 |  0  |  0  |    1    |
| 73.33333333 |          BASICO         | 1101 | 2017 | 1 | 0 |  0  |  0  |    1    |
| 61.33333333 |          BASICO         | 1101 | 2017 | 0 | 0 |  0  |  0  |    1    |
|     72.0    |          BASICO         | 1101 | 2017 | 0 | 0 |  0  |  0  |    1    |
| 69.33333333 |          BASICO         | 1101 | 2017 | 0 | 0 |  0  |  0  |    1    |
| 76.66666667 |          BASICO         | 1101 | 2017 | 1 | 0 |  0  |  0  |    1    |
|     77.0    |          BASICO         | 1101 | 2017 | 0 | 0 |  0  |  0  |    1    |
|     75.0    |          BASICO         | 1101 | 2017 | 1 | 0 |  1  |  1  |    1    |
|     68.3    |          BASICO         | 1101 | 2018 | 0 | 0 |  0  |  0  |    1    |
|     67.7    |          BASICO         | 1101 | 2018 | 1 | 0 |  0  |  0  |    1    |
|     79.3    |          BASICO         | 1101 | 2018 | 0 | 0 |  0  |  0  |    1    |
|     76.3    |          BASICO         | 1101 | 2018 | 0 | 0 |  0  |  0  |    1    |
|     71.7    |          BASICO         | 1101 | 2018 | 1 | 0 |  0  |  0  |    1    |
|     68.0    |          BASICO         | 1101 | 2018 | 0 | 0 |  0  |  0  |    1    |
| 65.33333333 |          BASICO         | 1101 | 2017 | 1 | 0 |  1  |  1  |    1    |
|     62.0    |          BASICO         | 1101 | 2018 | 1 | 0 |  0  |  0  |    1    |
|     92.0    |         SUPERIOR        | 1102 | 2017 | 0 | 0 |  0  |  0  |    1    |
|     78.0    |          BASICO         | 1103 | 2017 | 0 | 0 |  1  |  1  |    1    |
+-------------+-------------------------+------+------+---+---+-----+-----+---------+
+--------------------+
|    probability     |
+--------------------+
| 0.9999998987870442 |
| 0.9999998520378713 |
| 0.9999997942937026 |
| 0.9999996898697495 |
| 0.9999995540696031 |
| 0.9999995205384734 |
| 0.999999389183302  |
| 0.9999992491544943 |
| 0.999998914598793  |
| 0.9999971897166461 |
| 0.9999967061977745 |
| 0.9999951287257519 |
| 0.9999921479366296 |
| 0.999983952895827  |
| 0.9999772986916775 |
| 0.9999727551459011 |
| 0.9999423393492626 |
| 0.9999346064101229 |
| 0.9975585953854379 |
| 0.9973878796744897 |
+--------------------+
[20 rows x 29 columns]

Encontrar los estudiantes con menores probabilidades de tener buena nota

Para encontrar las "notas más negativas" se usan las probabilidades de predicción para encontrar las 20 revisiones en test_data con la probabilidad más baja de ser clasificada como una nota positiva.

In [86]:
+--------------------------------+-------+---------+------+----------+--------+
|           ESTUDIANTE           | CURSO | Estrato | AÑO  | ECONOMIA | FÍSICA |
+--------------------------------+-------+---------+------+----------+--------+
|   VILLALOBOS MOLINA NATALIA    |  1004 |    2    | 2016 |   61.7   |  51.0  |
|   TORRES OCHOA BRAYAN STIVEN   |  1003 |    2    | 2016 |   51.0   |  57.0  |
|    TORRES PARRA LAURA PAOLA    |  1002 |    2    | 2017 |   63.3   |  61.0  |
|    TORRES PARRA LAURA PAOLA    |  1002 |    2    | 2016 |   71.7   |  67.0  |
|   VELA ACERO EVELYN YOMAIRA    |  1004 |    2    | 2016 |   70.7   |  59.0  |
|   ROJAS ALDANA DIANA MARCELA   |  1004 |    2    | 2016 |   46.3   |  47.0  |
| SAENZ QUINTERO SAIRA VALENTINA |  1002 |    2    | 2016 |   63.7   |  67.0  |
|   VARGAS BORDA CAMILA ANDREA   |  1004 |    2    | 2016 |   63.7   |  44.0  |
|  MARTINEZ GOMEZ MIGUEL ANGEL   |  1001 |    2    | 2016 |   62.7   |  58.0  |
| SUAREZ CASTAÑEDA LAURA MARCELA |  1004 |    2    | 2016 |   56.3   |  50.0  |
|    USECHE MENDEZ IVAN SAMIR    |  1002 |    2    | 2017 |   45.3   |  60.0  |
|   LOSADA MORA PEDRO ESTEBAN    |  1003 |    2    | 2017 |   60.0   |  61.0  |
|  NIÑO PABON MICHELLE VANESSA   |  1003 |    2    | 2017 |   60.0   |  54.0  |
| RIVERA VEGA DANIELA ALEJANDRA  |  1002 |    1    | 2017 |   60.0   |  61.0  |
| PEREZ MARTINEZ CRISTIAN LE...  |  1001 |    2    | 2017 |   60.0   |  66.0  |
|    MEDINA CAÑON SARA LIZETH    |  1002 |    2    | 2017 |   60.0   |  53.0  |
|    CRUZ PELAEZ KEVIN FARID     |  1001 |    2    | 2017 |   57.7   |  69.0  |
|  LOPEZ SUAREZ LESLYE BRIYITTE  |  1002 |    2    | 2017 |   60.0   |  56.0  |
| ALBARRACIN RODRIGUEZ JESID...  |  1002 |    2    | 2017 |   70.7   |  71.0  |
|   AREVALO YAMA STIVEN ANDRES   |  1003 |    2    | 2017 |   60.0   |  61.0  |
+--------------------------------+-------+---------+------+----------+--------+
+-------------+-------------+---------------------+-----------------------+----------+
|   QUÍMICA   |   SOCIALES  | EDUCACION ARTISTICA | RECREACIÓN Y DEPORTES | RELIGION |
+-------------+-------------+---------------------+-----------------------+----------+
|     45.0    |     50.7    |         50.0        |          42.3         |   70.0   |
|     46.0    |     56.7    |         61.7        |          73.7         |   63.7   |
|     58.0    |     77.7    |         73.3        |          66.7         |   77.3   |
|     69.0    |     66.0    |         58.0        |          66.7         |   71.3   |
|     49.0    |     59.3    |         73.3        |          66.0         |   63.0   |
|     39.0    |     46.7    |         35.0        |          42.0         |   41.7   |
|     72.0    |     69.3    |         69.0        |          60.7         |   71.3   |
|     52.0    |     53.3    |         56.0        |          53.3         |   46.3   |
| 58.33333333 | 65.33333333 |     63.33333333     |          66.0         |   62.0   |
|     51.0    |     59.3    |         63.0        |          62.3         |   64.3   |
|     61.0    |     31.1    |         63.3        |          65.3         |   60.0   |
|     58.0    |     66.0    |         46.7        |          56.3         |   80.3   |
|     60.0    |     68.0    |         63.3        |          61.0         |   53.0   |
|     63.0    |     66.0    |         70.0        |          68.0         |   60.3   |
|     62.0    |     72.0    |         75.0        |          68.3         |   72.3   |
|     69.0    |     57.0    |         70.0        |          51.3         |   73.0   |
|     69.0    |     65.7    |         50.0        |          61.0         |   43.3   |
|     61.0    |     75.7    |         68.3        |          60.7         |   73.0   |
|     76.0    |     79.3    |         85.0        |          74.7         |   91.3   |
|     52.0    |     68.0    |         55.0        |          66.7         |   70.3   |
+-------------+-------------+---------------------+-----------------------+----------+
+-------+-------------+--------+-------------------+---------------+----------------+
| ETICA |  FILOSOFIA  | INGLES | LENGUA CASTELLANA | TRIGONOMETRIA | ADMINISTRACION |
+-------+-------------+--------+-------------------+---------------+----------------+
|  76.3 |     45.7    |  55.0  |        61.0       |      39.3     |      66.0      |
|  61.7 |     60.0    |  57.0  |        53.0       |      46.3     |      50.0      |
|  70.3 |     76.0    |  58.0  |        79.0       |      64.7     |      0.0       |
|  76.0 |     72.3    |  72.0  |        76.0       |      55.0     |      76.0      |
|  88.3 |     73.7    |  64.0  |        70.0       |      60.3     |      67.0      |
|  58.7 |     42.7    |  45.0  |        43.0       |      33.0     |      57.0      |
|  72.0 |     68.7    |  70.0  |        74.0       |      72.3     |      78.0      |
|  49.0 |     52.7    |  36.0  |        43.0       |      26.7     |      52.0      |
|  72.0 | 64.66666667 |  63.0  |        62.0       |      58.0     |  64.66666667   |
|  71.0 |     60.0    |  57.0  |        71.0       |      51.0     |      54.0      |
|  63.3 |     53.5    |  41.0  |        58.0       |      60.0     |      0.0       |
|  74.7 |     71.7    |  60.0  |        63.0       |      65.7     |      0.0       |
|  72.3 |     60.0    |  65.0  |        61.0       |      65.0     |      0.0       |
|  73.3 |     66.7    |  68.0  |        63.0       |      60.7     |      0.0       |
|  76.3 |     69.3    |  54.0  |        77.0       |      66.3     |      0.0       |
|  57.7 |     64.7    |  46.0  |        70.0       |      59.0     |      0.0       |
|  66.7 |     68.3    |  60.0  |        62.0       |      65.3     |      0.0       |
|  73.7 |     83.7    |  54.0  |        66.0       |      67.0     |      0.0       |
|  87.3 |     83.3    |  78.0  |        81.0       |      91.0     |      0.0       |
|  69.0 |     61.3    |  60.0  |        60.0       |      65.3     |      0.0       |
+-------+-------------+--------+-------------------+---------------+----------------+
+---------------------+-------------------------+---------+-------------------------+
| MANEJO  ORDENADORES | PREPARACIÓN TECNOLÓGICA | CALCULO | CONVENCIONES MINISTERIO |
+---------------------+-------------------------+---------+-------------------------+
|         69.0        |           83.0          |   54.3  |           BAJO          |
|         68.0        |           58.0          |   54.3  |           BAJO          |
|         83.0        |           67.0          |   54.3  |           BAJO          |
|         92.0        |           77.0          |   54.3  |           BAJO          |
|         87.0        |           72.0          |   54.3  |           BAJO          |
|         59.0        |           71.0          |   54.3  |           BAJO          |
|         81.0        |           70.0          |   54.3  |           BAJO          |
|         59.0        |           49.0          |   54.3  |           BAJO          |
|     69.33333333     |           60.0          |   70.3  |          BASICO         |
|         73.0        |           59.0          |   54.3  |           BAJO          |
|         57.0        |           68.0          |   54.3  |           BAJO          |
|         69.0        |           63.0          |   63.3  |          BASICO         |
|         67.0        |           65.0          |   68.7  |          BASICO         |
|         81.0        |           57.0          |   67.3  |          BASICO         |
|         81.0        |           74.0          |   56.3  |           BAJO          |
|         66.0        |           66.0          |   68.7  |          BASICO         |
|         90.0        |           66.0          |   48.7  |           BAJO          |
|         81.0        |           62.0          |   70.0  |          BASICO         |
|         95.0        |           89.0          |   86.0  |           ALTO          |
|         74.0        |           65.0          |   67.0  |          BASICO         |
+---------------------+-------------------------+---------+-------------------------+
+------+------+---+---+-----+-----+---------+-----------------------+
| C11  | A11  | S | R | J10 | J11 | Fracaso |      probability      |
+------+------+---+---+-----+-----+---------+-----------------------+
| 1102 | 2018 | 0 | 0 |  1  |  1  |    -1   | 5.770947887560335e-05 |
| 1102 | 2018 | 1 | 0 |  1  |  1  |    -1   |  0.002739207492930062 |
| 1102 | 2018 | 0 | 1 |  0  |  0  |    -1   |  0.009591245659701948 |
| 1102 | 2018 | 0 | 0 |  0  |  0  |    -1   |  0.009983404261906434 |
| 1102 | 2018 | 0 | 0 |  1  |  0  |    -1   |  0.010193301980334732 |
| 1102 | 2018 | 0 | 0 |  1  |  0  |    -1   |  0.012595994200166001 |
| 1102 | 2018 | 0 | 0 |  0  |  0  |    -1   |  0.016927250206945837 |
| 1102 | 2018 | 0 | 0 |  1  |  0  |    -1   |  0.029209412398816314 |
| 1103 | 2018 | 1 | 0 |  0  |  0  |    1    |  0.03672770614547293  |
| 1102 | 2018 | 0 | 0 |  1  |  0  |    -1   |  0.04507661592969937  |
| 1102 | 2018 | 1 | 0 |  0  |  0  |    -1   |  0.10726398008037073  |
| 1102 | 2018 | 1 | 0 |  0  |  0  |    1    |  0.30844759469328825  |
| 1103 | 2018 | 0 | 0 |  0  |  0  |    1    |  0.34672023503983707  |
| 1102 | 2018 | 0 | 0 |  0  |  0  |    1    |  0.39532753215617444  |
| 1102 | 2018 | 1 | 0 |  0  |  0  |    -1   |   0.395489599398818   |
| 1102 | 2018 | 0 | 0 |  0  |  0  |    1    |  0.39741822802780663  |
| 1102 | 2018 | 1 | 0 |  0  |  0  |    -1   |   0.4605730244208306  |
| 1102 | 2018 | 0 | 0 |  0  |  0  |    1    |   0.5297157113923776  |
| 1102 | 2018 | 1 | 0 |  0  |  0  |    1    |   0.5411793952373951  |
| 1103 | 2018 | 1 | 0 |  0  |  0  |    1    |   0.6285349635692261  |
+------+------+---+---+-----+-----+---------+-----------------------+
[20 rows x 29 columns]

Evaluar el Modelo, calcular la precisión y exactitud del clasificador

A continuación se evaluara la precisión del clasificador entrenado. La precisión viene dada por:

precisión=# ejemplos correctamente clasificados# total de ejemplos

Esto se puede calcular de la siguiente manera:

  • Paso 1: Usar el modelo entrenado para calcular las predicciones de clase usa el método predic.
  • Paso 2: Contar el número de puntos de datos cuando las notas de clase predichas coincidan con las notas de verdad básica las cuales seran llamadas notas_verdaderas.
  • Paso 3: Dividir el número total de predicciones correctas por el número total de puntos de datos en el conjunto de datos.

La siguiente función calcula la precisión de clasificación:

In [87]:

Ahora, se calcula la precisión de clasificación del students_model en test_data.

In [88]:
Out[88]:
0.9322033898305084

La precisión del modelo tambien se puede obtener con el metodo evaluate en el cual se evalua la precision y se realiza una matriz de confusión, donde se tienen en cuenta los datos de prueba y los datos de entrenamiento razon por la cual tiene un poco mas de precisión.

Evaluación del modelo con los datos de entrenamiento

In [89]:
Out[89]:
{'accuracy': 0.9322033898305084,
 'auc': 0.9729055258467016,
 'confusion_matrix': Columns:
 	target_label	int
 	predicted_label	int
 	count	int
 
 Rows: 4
 
 Data:
 +--------------+-----------------+-------+
 | target_label | predicted_label | count |
 +--------------+-----------------+-------+
 |      1       |        1        |   82  |
 |      -1      |        -1       |   28  |
 |      -1      |        1        |   5   |
 |      1       |        -1       |   3   |
 +--------------+-----------------+-------+
 [4 rows x 3 columns],
 'f1_score': 0.9534883720930232,
 'log_loss': 0.18151477606880836,
 'precision': 0.9425287356321839,
 'recall': 0.9647058823529412,
 'roc_curve': Columns:
 	threshold	float
 	fpr	float
 	tpr	float
 	p	int
 	n	int
 
 Rows: 100001
 
 Data:
 +-----------+-----+-----+----+----+
 | threshold | fpr | tpr | p  | n  |
 +-----------+-----+-----+----+----+
 |    0.0    | 1.0 | 1.0 | 85 | 33 |
 |   1e-05   | 1.0 | 1.0 | 85 | 33 |
 |   2e-05   | 1.0 | 1.0 | 85 | 33 |
 |   3e-05   | 1.0 | 1.0 | 85 | 33 |
 |   4e-05   | 1.0 | 1.0 | 85 | 33 |
 |   5e-05   | 1.0 | 1.0 | 85 | 33 |
 |   6e-05   | 1.0 | 1.0 | 85 | 33 |
 |   7e-05   | 1.0 | 1.0 | 85 | 33 |
 |   8e-05   | 1.0 | 1.0 | 85 | 33 |
 |   9e-05   | 1.0 | 1.0 | 85 | 33 |
 +-----------+-----+-----+----+----+
 [100001 rows x 5 columns]
 Note: Only the head of the SFrame is printed.
 You can use print_rows(num_rows=m, num_columns=n) to print more rows and columns.}

Evaluación del modelo con los datos de prueba

In [90]:
Out[90]:
{'accuracy': 0.90625,
 'auc': 0.9713423831070889,
 'confusion_matrix': Columns:
 	target_label	int
 	predicted_label	int
 	count	int
 
 Rows: 4
 
 Data:
 +--------------+-----------------+-------+
 | target_label | predicted_label | count |
 +--------------+-----------------+-------+
 |      1       |        -1       |   5   |
 |      1       |        1        |   46  |
 |      -1      |        -1       |   12  |
 |      -1      |        1        |   1   |
 +--------------+-----------------+-------+
 [4 rows x 3 columns],
 'f1_score': 0.9387755102040817,
 'log_loss': 0.22282073710616115,
 'precision': 0.9787234042553191,
 'recall': 0.9019607843137255,
 'roc_curve': Columns:
 	threshold	float
 	fpr	float
 	tpr	float
 	p	int
 	n	int
 
 Rows: 100001
 
 Data:
 +-----------+--------------------+-----+----+----+
 | threshold |        fpr         | tpr | p  | n  |
 +-----------+--------------------+-----+----+----+
 |    0.0    |        1.0         | 1.0 | 51 | 13 |
 |   1e-05   |        1.0         | 1.0 | 51 | 13 |
 |   2e-05   |        1.0         | 1.0 | 51 | 13 |
 |   3e-05   |        1.0         | 1.0 | 51 | 13 |
 |   4e-05   |        1.0         | 1.0 | 51 | 13 |
 |   5e-05   |        1.0         | 1.0 | 51 | 13 |
 |   6e-05   | 0.9230769230769231 | 1.0 | 51 | 13 |
 |   7e-05   | 0.9230769230769231 | 1.0 | 51 | 13 |
 |   8e-05   | 0.9230769230769231 | 1.0 | 51 | 13 |
 |   9e-05   | 0.9230769230769231 | 1.0 | 51 | 13 |
 +-----------+--------------------+-----+----+----+
 [100001 rows x 5 columns]
 Note: Only the head of the SFrame is printed.
 You can use print_rows(num_rows=m, num_columns=n) to print more rows and columns.}

Consolidado de los datos de entrenamiento y de prueba

In [91]:
Out[91]:
{'accuracy': 0.9230769230769231,
 'auc': 0.9675511508951402,
 'confusion_matrix': Columns:
 	target_label	int
 	predicted_label	int
 	count	int
 
 Rows: 4
 
 Data:
 +--------------+-----------------+-------+
 | target_label | predicted_label | count |
 +--------------+-----------------+-------+
 |      1       |        -1       |   8   |
 |      1       |        1        |  128  |
 |      -1      |        -1       |   40  |
 |      -1      |        1        |   6   |
 +--------------+-----------------+-------+
 [4 rows x 3 columns],
 'f1_score': 0.9481481481481482,
 'log_loss': 0.19603994918084452,
 'precision': 0.9552238805970149,
 'recall': 0.9411764705882353,
 'roc_curve': Columns:
 	threshold	float
 	fpr	float
 	tpr	float
 	p	int
 	n	int
 
 Rows: 100001
 
 Data:
 +-----------+--------------------+-----+-----+----+
 | threshold |        fpr         | tpr |  p  | n  |
 +-----------+--------------------+-----+-----+----+
 |    0.0    |        1.0         | 1.0 | 136 | 46 |
 |   1e-05   |        1.0         | 1.0 | 136 | 46 |
 |   2e-05   |        1.0         | 1.0 | 136 | 46 |
 |   3e-05   |        1.0         | 1.0 | 136 | 46 |
 |   4e-05   |        1.0         | 1.0 | 136 | 46 |
 |   5e-05   |        1.0         | 1.0 | 136 | 46 |
 |   6e-05   | 0.9782608695652174 | 1.0 | 136 | 46 |
 |   7e-05   | 0.9782608695652174 | 1.0 | 136 | 46 |
 |   8e-05   | 0.9782608695652174 | 1.0 | 136 | 46 |
 |   9e-05   | 0.9782608695652174 | 1.0 | 136 | 46 |
 +-----------+--------------------+-----+-----+----+
 [100001 rows x 5 columns]
 Note: Only the head of the SFrame is printed.
 You can use print_rows(num_rows=m, num_columns=n) to print more rows and columns.}

Se evalua la precisión con los datos de prueba y los datos de entrenamiento, evidenciando que es la misma que se dio como resultado la funcion evaluate

In [92]:
Out[92]:
0.9230769230769231

Se realiza la predicción sobre todo el conjunto de datos de los estudiantes

In [93]:

Entrenar otro clasificador con menos caracteristicas

Se usan todas la caracteristicas en el modelo anterior. Ahora se entrenará un modelo de regresión logística más simple utilizando solo un subconjunto de caracteristicas que aparecen en la sabana de notas. Para esta tarea, se seleccionaran solo las asignaturas. Estos son:

In [94]:
In [95]:
Out[95]:
15

Entrenar un modelo de regresión logística en un subconjunto de datos

Ahora se crea un clasificador con Asignaturas como característica y ** Fracaso ** como objetivo.

In [96]:
Out[96]:
Class                          : LogisticClassifier

Schema
------
Number of coefficients         : 16
Number of examples             : 118
Number of classes              : 2
Number of feature columns      : 15
Number of unpacked features    : 15

Hyperparameters
---------------
L1 penalty                     : 0.0
L2 penalty                     : 0.01

Training Summary
----------------
Solver                         : newton
Solver iterations              : 3
Solver status                  : SUCCESS: Optimal solution found.
Training time (sec)            : 0.0024

Settings
--------
Log-likelihood                 : 63.7327

Highest Positive Coefficients
-----------------------------
MANEJO  ORDENADORES            : 0.0631
SOCIALES                       : 0.0592
LENGUA CASTELLANA              : 0.042
FÍSICA                         : 0.0095
ADMINISTRACION                 : 0.006

Lowest Negative Coefficients
----------------------------
(intercept)                    : -1.4834
ECONOMIA                       : -0.0458
RECREACIÓN Y DEPORTES          : -0.0388
ETICA                          : -0.0368
RELIGION                       : -0.0193

Comparación de Modelos

Ahora se calcula la precisión de clasificación utilizando la función get_Precision_Clasificacion que se implementó anteriormente.

In [97]:
0.84375
0.90625

Ahora se revisa la precisión con los datos de entrenamiento

In [98]:
0.7372881355932204
0.9322033898305084

De lo anterior se puede concluir que entre menos caracteristicas tenga el modelo menor es su precisión.

Se revisan los coeficientes de simple_model:

In [99]:
Out[99]:
name index class value stderr
(intercept) None 1 -1.483389766935871 3.676982996015537
ECONOMIA None 1 -0.04578722212006558 0.062202171198081226
FÍSICA None 1 0.0094640231983315 0.0473998748033986
QUÍMICA None 1 -0.007784139156500198 0.04664424536698715
SOCIALES None 1 0.05919566379936625 0.05216389826602649
EDUCACION ARTISTICA None 1 0.0005437232943721551 0.03445356327998263
RECREACIÓN Y DEPORTES None 1 -0.03875602200759394 0.04331912194084268
RELIGION None 1 -0.01930382364791221 0.027862771050159187
ETICA None 1 -0.03682056106269357 0.03769713504086529
FILOSOFIA None 1 0.0010919691456089447 0.034471833873307954
[16 rows x 5 columns]
Note: Only the head of the SFrame is printed.
You can use print_rows(num_rows=m, num_columns=n) to print more rows and columns.

Se ordenan los coeficientes (en orden descendente) por el valor para obtener los coeficientes con el efecto más positivo en la nota.

In [100]:
+-------------------------+-------+-------+-----------------------+
|           name          | index | class |         value         |
+-------------------------+-------+-------+-----------------------+
|   MANEJO  ORDENADORES   |  None |   1   |  0.06313250960005795  |
|         SOCIALES        |  None |   1   |  0.05919566379936625  |
|    LENGUA CASTELLANA    |  None |   1   |  0.04201484580670062  |
|          FÍSICA         |  None |   1   |   0.0094640231983315  |
|      ADMINISTRACION     |  None |   1   |  0.005985018707629899 |
| PREPARACIÓN TECNOLÓGICA |  None |   1   | 0.0020988496251170678 |
|        FILOSOFIA        |  None |   1   | 0.0010919691456089447 |
|   EDUCACION ARTISTICA   |  None |   1   | 0.0005437232943721551 |
|          INGLES         |  None |   1   | -0.003951857552623652 |
|      TRIGONOMETRIA      |  None |   1   | -0.004651165281555013 |
|         QUÍMICA         |  None |   1   | -0.007784139156500198 |
|         RELIGION        |  None |   1   |  -0.01930382364791221 |
|          ETICA          |  None |   1   |  -0.03682056106269357 |
|  RECREACIÓN Y DEPORTES  |  None |   1   |  -0.03875602200759394 |
|         ECONOMIA        |  None |   1   |  -0.04578722212006558 |
|       (intercept)       |  None |   1   |   -1.483389766935871  |
+-------------------------+-------+-------+-----------------------+
+----------------------+
|        stderr        |
+----------------------+
| 0.04456189368726723  |
| 0.05216389826602649  |
| 0.04799198406441616  |
|  0.0473998748033986  |
| 0.009878961494448942 |
| 0.04049865325416556  |
| 0.034471833873307954 |
| 0.03445356327998263  |
| 0.06472739516370737  |
|  0.0409964995818316  |
| 0.04664424536698715  |
| 0.027862771050159187 |
| 0.03769713504086529  |
| 0.04331912194084268  |
| 0.062202171198081226 |
|  3.676982996015537   |
+----------------------+
[16 rows x 5 columns]

Predicción de clase mayoritaria

Es bastante común usar el clasificador de clase mayoritaria como modelo de referencia (o referencia) para compararlo con su modelo de clasificador. El modelo clasificador mayoritario predice la clase mayoritaria para todos los puntos de datos. Por lo menos, debe vencer de manera saludable al clasificador de clase mayoritario, de lo contrario, el modelo (generalmente) no tiene sentido.

A continuación se representa la clase mayoritaria en el train_data?

In [101]:
85
33
In [102]:
Out[102]:
0.7203389830508474

Ahora se calcula la precisión del clasificador de clase mayoritaria en test_data para evidenciar la relación de los datos.

In [103]:
51
13
Out[103]:
0.796875

Para finalizar se exportan los datos resultantes del modelo con mejor precisión y exactitud a formato separado por comas en un documento llamados Estudiantes .csv

In [104]: